const XLSX = require('xlsx');
const fs = require('fs');
const path = require('path');

// 确保data目录存在
const dataDir = path.join(__dirname, './');
if (!fs.existsSync(dataDir)) {
    fs.mkdirSync(dataDir, { recursive: true });
}

// 生成测试数据
function generateTestData(count = 500) {
    const categories = ['电子产品', '家居用品', '办公用品', '食品饮料', '服装鞋帽', '运动器材', '美妆护肤', '图书音像', '母婴用品', '宠物用品'];
    const data = [];

    for (let i = 1; i <= count; i++) {
        // 生成随机日期（2022-2024年之间）
        const year = 2022 + Math.floor(Math.random() * 3);
        const month = 1 + Math.floor(Math.random() * 12);
        const day = 1 + Math.floor(Math.random() * 28);
        const dateStr = `${year}-${month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')}`;

        // 生成随机价格（10-9999之间）
        const price = (Math.random() * 9989 + 10).toFixed(2);
        
        // 生成随机库存（1-1000之间）
        const stock = Math.floor(Math.random() * 1000) + 1;
        
        // 选择随机类别
        const category = categories[Math.floor(Math.random() * categories.length)];
        
        // 创建数据项
        data.push({
            id: i,
            name: `产品${i}`,
            description: `这是产品${i}的详细描述，包含产品特性和用途说明。`,
            category: category,
            price: parseFloat(price),
            stock: stock,
            rating: (Math.random() * 4 + 1).toFixed(1),  // 1-5星评分
            is_available: Math.random() > 0.1 ? true : false,  // 90%概率可用
            create_date: dateStr,
            supplier: `供应商${Math.floor(Math.random() * 20) + 1}`,
            weight: (Math.random() * 10).toFixed(2),  // 重量（kg）
            dimensions: `${Math.floor(Math.random() * 50) + 10}x${Math.floor(Math.random() * 40) + 10}x${Math.floor(Math.random() * 30) + 5}`,  // 尺寸
        });
    }

    return data;
}

// 创建工作簿并添加数据
function createExcelFile(data, filePath) {
    // 创建新的工作簿
    const workbook = XLSX.utils.book_new();
    
    // 将数据转换为工作表
    const worksheet = XLSX.utils.json_to_sheet(data);
    
    // 将工作表添加到工作簿
    XLSX.utils.book_append_sheet(workbook, worksheet, "产品数据");
    
    // 写入文件
    XLSX.writeFile(workbook, filePath);
    
    console.log(`成功生成Excel文件: ${filePath}`);
    console.log(`共生成 ${data.length} 条测试数据`);
}

// 主函数
function main() {
    console.log('开始生成测试数据...');
    const testData = generateTestData(500);
    const filePath = path.join(dataDir, 'data.xlsx');
    createExcelFile(testData, filePath);
    console.log('测试数据生成完成！');
}

// 执行程序
main();
